package com.github.util;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Date;

public class JwtUtil {

    private static final String SECRET_KEY = "your-secret-key"; // 密钥
    private static final long EXPIRATION_TIME = 86400000; // 过期时间（毫秒），例如 1 天

    // 生成 JWT
    public static String generateToken(String username) {
        return Jwts.builder()
                .setSubject(username) // 设置主题（通常是用户名）
                .setIssuedAt(new Date()) // 设置签发时间
                .setExpiration(new Date(System.currentTimeMillis() + EXPIRATION_TIME)) // 设置过期时间
                .signWith(SignatureAlgorithm.HS512, SECRET_KEY) // 签名算法和密钥
                .compact();
    }

    // 解析 JWT
    public static Claims parseToken(String token) {
        try {
            return Jwts.parser()
                    .setSigningKey(SECRET_KEY)
                    .parseClaimsJws(token)
                    .getBody();
        } catch (Exception e) {
            return null; // 如果解析失败，返回 null
        }
    }

    // 验证 JWT 是否有效
    public static boolean validateToken(String token, String username) {
        Claims claims = parseToken(token);
        return claims != null && claims.getSubject().equals(username) && !claims.getExpiration().before(new Date());
    }
}